using System;

namespace MetaObjects.Contracts
{
	public interface IMetaEntityProvider
	{
		Func<object, IMetaEntity> EntityFactory { get; }
	}

	public interface IMetaEntityProvider<TMetaEntity> : IMetaEntityProvider
	{
		new Func<TMetaEntity, IMetaEntity> EntityFactory { get; }
	}

	public interface IMetaEntityProvider<TMetaEntity, TEntity> : IMetaEntityProvider<TMetaEntity>
	{
		new Func<TMetaEntity, IMetaEntity<TEntity>> EntityFactory { get; }
	}

}